package cn.baiweigang.uu.model;

import cn.baiweigang.uu.enums.*;
import lombok.Data;

import java.math.BigDecimal;

@Data
public class TradeInfo {
    private String accountName;//在哪个账号下操作
    private ContractCodeEnum contractCode;//合约代码
    private String clientOrderId;//我自己生成的  小于等于9223372036854775807
    private String ordeIdStr;//String类型订单ID
    private long orderId;//平台的订单ID
    private BigDecimal price;//价格
    private BigDecimal tradeAvgPrice;//平均成交均价
    private long volume;//委托数量(张)
    private DirectionEnum direction;//仓位方向	"buy":买 "sell":卖
    private OffsetEnum offset;//开平方向	"open":开 "close":平
    private String openOrderId;//对应的开单单号，只平单有
    private Integer leverRate;//杠杆系数
    private OrderPriceTypeEnum orderPriceType;//订单报价类型 "limit":限价 "opponent":对手价 "post_only":只做maker单,post only下单只受用户持仓数量限制,optimal_5：最优5档、

    private BigDecimal tpTriggerPrice;//止盈触发价格
    private BigDecimal tpOrderPrice;//止盈委托价格（最优N档委托类型时无需填写价格）
    private OrderPriceTypeEnum tpOrderPriceType;//止盈委托类型	不填默认为limit

    private BigDecimal slTriggerPrice;//止损触发价格
    private BigDecimal slOrderPrice;//止盈委托价格（最优N档委托类型时无需填写价格）
    private OrderPriceTypeEnum slOrderPriceType;//止盈委托类型	不填默认为limit

    private long createdGmt;//创建时间
    private BigDecimal tradeVolume;//成交数量
    private BigDecimal tradeTurnover;//成交总金额 ，即sum（每一笔成交张数 * 合约面值 * 成交价格）
    private BigDecimal fee;//手续费
    private BigDecimal marginFrozen;//冻结保证金
    private BigDecimal profit;//平仓盈亏（使用持仓均价计算，不包含仓位跨结算的已实现盈亏。）
    private BigDecimal realProfit;//真实收益（使用开仓均价计算，包含仓位跨结算的已实现盈亏。）
    private TradeStatusEnum status;//订单状态	(1准备提交 2准备提交 3已提交 4部分成交 5部分成交已撤单 6全部成交 7已撤单 11撤单中)
    private long canceledGmt;//撤单时间
    private MarginModeEnum marginMode;//保证金模式	isolated：逐仓模式
    private int istpsl;//是否设置止盈止损	1：是；0：否
    private String tpslOrderType;//止盈止损类型	“tp”:止盈单；"sl"：止损单
    private String orderSource;//（system:系统、web:用户网页、api:用户API、m:用户M站、risk:风控系统、settlement:交割结算、ios：ios客户端、android：安卓客户端、windows：windows客户端、mac：mac客户端、trigger：计划委托触发、tpsl:止盈止损触发 ）
    private TradeTypeEnum tradeType;//0:全部,1:买入 开多,2: 卖出开空,3: 买入平空,4: 卖出平多。
    private TriggerTypeEnum triggerType;//触发类型： ge大于等于(触发价比最新价大)；le小于(触发价比最新价小)
    private BigDecimal triggerPrice;//触发价，精度超过最小变动单位会报错
    private String role;//taker或maker
    private String sourceOrderId;//源限价单的订单id（下单设置的止盈止损订单该字段才有值，表示当前止盈止损单由哪个限价单触发的）
    private String relationTpslOrderId;//关联的止盈止损单id（用户同时设置止盈止损单时，该字段才有值，否则数值为-1）

    private String dealDateTime;//订单成交时间
    private double maxTpVolume;//持仓期间最大盈利点数
    private double maxSlVolume;//持仓期间最大亏损点数

    //交割合约
    private SymbolEnum symbol;//支持大小写,"BTC","ETH"...
    private ContractTypeEnum contractType;//合约类型 ("this_week":当周 "next_week":下周 "quarter":当季 "next_quarter":次季)
}
